from opencc import OpenCC
import os
import sys

def convert_simplified_to_traditional(content):
    """使用OpenCC将简体中文转换为台湾繁体（最高准确性）"""
    # 创建转换器实例：s2twp 表示简体到台湾繁体(含短语)
    cc = OpenCC('s2t')
    return cc.convert(content)

def process_directory(directory):
    """处理目录中的所有文件"""
    # 支持的文件类型
    supported_extensions = ['.vue', '.js', '.ts', '.html', '.json', '.md', '.txt', '.jsx', '.tsx']
    
    # 需要排除的目录和文件
    excluded_dirs = ['node_modules', 'dist', 'build', '.git', '.vscode', '.idea']
    excluded_files = ['package-lock.json', 'yarn.lock']
    
    # 统计变量
    total_files = 0
    converted_files = 0
    
    # 计算文件总数（用于进度显示）
    for root, dirs, files in os.walk(directory):
        # 跳过排除目录
        if any(ex_dir in root.split(os.sep) for ex_dir in excluded_dirs):
            continue
            
        for file in files:
            file_path = os.path.join(root, file)
            file_ext = os.path.splitext(file)[1].lower()
            
            # 检查文件扩展名和排除文件
            if file_ext in supported_extensions and file not in excluded_files:
                total_files += 1
    
    print(f"发现 {total_files} 个需要转换的文件...")
    
    # 实际转换
    current_count = 0
    for root, dirs, files in os.walk(directory):
        # 更新排除目录列表（实时过滤）
        dirs[:] = [d for d in dirs if d not in excluded_dirs]
        
        for file in files:
            file_path = os.path.join(root, file)
            file_ext = os.path.splitext(file)[1].lower()
            
            # 检查文件扩展名和排除文件
            if file_ext in supported_extensions and file not in excluded_files:
                try:
                    current_count += 1
                    # 显示进度
                    progress = int(current_count / total_files * 100)
                    print(f"\r[{progress}%] 正在处理: {file_path}", end='', flush=True)
                    
                    # 读取文件内容
                    with open(file_path, 'r', encoding='utf-8') as f:
                        content = f.read()
                    
                    # 转换内容（使用更准确的OpenCC）
                    converted_content = convert_simplified_to_traditional(content)
                    
                    # 写回文件
                    with open(file_path, 'w', encoding='utf-8') as f:
                        f.write(converted_content)
                    
                    converted_files += 1
                
                except Exception as e:
                    print(f"\n❌ 转换失败 {file_path}: {str(e)}")
    
    print(f"\n\n转换完成！成功转换 {converted_files}/{total_files} 个文件")
    print("请仔细检查 Git 变更确认修改内容")

if __name__ == "__main__":
    # 获取当前目录
    target_dir = os.getcwd()
    
    # 安全提示
    print("="*60)
    print("中文简繁转换工具 (使用OpenCC高精度引擎)")
    print("="*60)
    print(f"项目目录: {target_dir}")
    print("\n重要安全提示:")
    print("1. 此操作将直接修改项目文件！")
    print("2. 请确保已使用 Git 提交所有当前更改")
    print("3. 建议先创建新分支: git checkout -b zh-conversion")
    print("4. 转换后请运行项目测试功能")
    print("="*60)
    
    confirm = input("我已做好备份，确定开始转换吗？(y/n): ").strip().lower()
    
    if confirm == 'y':
        print(f"\n开始高精度转换项目: {os.path.basename(target_dir)}")
        process_directory(target_dir)
        
        # 转换后提示
        print("\n" + "="*60)
        print("✅ 高精度转换已完成！下一步操作:")
        print("1. 运行: git diff 查看更改")
        print("2. 特别注意检查专业术语的转换准确性")
        print("3. 运行项目测试: npm run dev")
        print("4. 检查控制台是否有错误")
        print("5. 手动检查重要页面显示")
        print("="*60)
    else:
        print("操作已取消")